The present invention relates generally to 3D animated content, and more particularly, to a system and method for scaling the quality of the 3D graphics of the animated content based on detected Internet bandwidth and CPU speed of a host computer.
With the convergence of various media platforms, it is becoming increasingly common for companies to cash in on a successful product on one platform by developing a version of the product for another platform. For instance, a company with a successful video game may wish to make a three-dimensional (3D) movie featuring the characters used in the video game for distribution as a television series.
Due to the different requirements and incompatible nature of the various delivery platforms, it is usually necessary to completely redo much of the artwork for the new medium. For instance, a 1000-polygon model of a 3D object created for the video game version may not be usable for the television version of the product. One reason for this may be due to incompatible data formats. The 3D model used for the video game version may not be readable by the software used to create and animate a television version.
Redevelopment for the new medium may also be required due to incompatible resolutions. A 1000-polygon model that was developed and optimized for a video game may be unacceptably chunky and low-resolution for its television version.
A third reason for the redevelopment of 3D models and artwork might be incompatible animation. The preset xe2x80x9cmovesxe2x80x9d used for a video game may not be useable for the television version where pre-scripted, fully animated character movement is required.
Redevelopment of 3D models and artwork might also be required due to the incompatibility of the 3D modeling and animation tools used for different media. Although modern computers provide effective tools for producing 3D animated content for various media platforms, the programming, modeling, animation and publishing tools used for PC, Internet and television production are frequently incompatible with each other. Thus, multiple sets of development software packages have to be purchased with the attendant issues of cost and difficulty of converting data between the various platforms.
The combination of problems listed above has meant that in general, it is possible to reuse as little as 10% of the assets of a 3D content when developing a version of that content for a different platform.
Problems also arise when creating animated content for distribution to different target machines within the same medium due to their different performance capabilities. For instance, highest-end PCs are capable of rendering high-quality graphics while lower-end PCs are not be capable of rendering such high graphics quality. Because the target machine on which a 3D content will ultimately be rendered is rarely known, two strategies have been utilized to address this issue. One of the strategies is to build the 3D content to have adequate performance on the lowest-end PC to ensure that the 3D content is capable of being played by all types of PCs. With this strategy, the 3D content will perform well on low-end PCs, but the design of the graphics will not meet the expectations of high-end PC owners.
A second strategy is to build the 3D content to perform adequately on mid- to high-end PCs. In this case, the mid- to high-end PC owners will be satisfied with copious high-quality graphics, but a large fraction of the market with low-end PCs may be unable to play the 3D content.
In addition to the above, the creation of 3D animated content using conventional systems and methods is a painstaking and difficult process. For example, any changes made to a 3D object appearing in one scene of a 3D animated content must be made in all the scenes in which the character appears in order for the change to be reflected in those scenes. Furthermore, because animation data is scene specific, animation data created for one particular scene is not shared among the other scenes. Thus, pieces of animation data created for a first scene must be reiterated and stored for a second scene in order for that data to be used by the second scene.
Furthermore, the streaming of 3D animated content over the Internet using conventional systems and methods for real-time playback is fraught with difficulties. One approach used in the prior art for streaming data over the Internet include unlimited read-ahead methods where data is read ahead of the playback position, and attempt is made to pre-fetch as much data as possible. However, this approach is limited in use for multipath movies that have many plot alternatives, or paths, that are influenced by a user""s interaction with the movie. Data for a multipath movie may be pre-fetched only up to the point when a user interaction is required. Data beyond this point may not be pre-fetched because it is not possible to predict what scene will be played next, and thus, what data is going to be required next.
Another approach used in the prior art for streaming Internet data is to use a just-in-time approach where data is received just in time to be played. However, this technique falls victim to the vagaries of the Internet. Data rates available for delivering 3D animated content are often inconsistent in nature. The data rate may average 2 Kbps, but there may be times when data is being received at 3 Kbps or no data is being received at all. The failure of the required data to be arrived in time causes pauses in the playback of the animated content.
Accordingly, there is a need for a 3D animation tool that will allow the creation of 3D animated content for different media without engaging in separate development processes. Such tool should allow 3D models and artwork created for one medium to be reused in a different medium. Such a tool should also allow the creation of scalable content for allowing the display of one type of graphics for one kind of target machine and a different type of graphics for a different kind of target machine.
There is also a need for a 3D animation tool that will facilitate the replacement and modifications of 3D objects, as well as allow the re-use of frequently occurring pieces of animation data among the scenes of a movie. Furthermore, there is a need for a system and method for facilitating the streaming of 3D animated content over the Internet for real-time playback. Such system and method should not only provide a streaming technique for multipath movies, but also provide for animation data reduction techniques for reducing the amount of data to be delivered over the Internet.
The present invention addresses and alleviates the above-mentioned deficiencies associated with the prior art. More particularly, the present invention facilitates the production, processing, and Internet distribution of 3D animated content.
In accordance with a one aspect of the invention, the 3D animated content is created for multiple target platforms from a single production process. The 3D animated content may be created for different CPU speeds, audiences, media platforms, and the like, without having to start afresh each time a different target platform or audience is identified. Instead, the present system and method allows multiple versions of the 3D animated content to be created and tagged appropriately for being played at different target platforms.
The system and method according to this aspect of the invention includes creating a first version of a node of the 3D object identifying a first piece of 3D geometry data and tagging each version of the node with a tag identifier. The tag identifier identifies each version of the node as suitable for display in a particular type of machine. The system and method further includes storing the first and second versions of the node in a library model file where the library model file resides in a storage location accessible to all the scenes of the animated content, and packaging the 3D animated content for distribution to one of the target platforms. With all the versions of the node available, appropriate versions of the node may be selected based on the target platform in which the 3D animated content is to be played.